//---------------------------------------------------------------------
//  This file is part of the Background Motion solution.
// 
//  Copyright (C) Mindscape (TM).  All rights reserved.
//  http://www.mindscape.co.nz
// 
//  THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY
//  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
//  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//  PARTICULAR PURPOSE.
//---------------------------------------------------------------------

using System.ServiceModel;
using Mindscape.BackgroundMotion.Services.Contracts.Entities;

namespace Mindscape.BackgroundMotion.Services.Contracts
{
  /// <summary>
  /// Represents the contract of operations presented by the remote facade over the Background Motion service layer
  /// </summary>
  [ServiceContract(Name = "Content", Namespace = "http://www.backgroundmotion.com/service/content")]
  public interface IContentService
  {
    /// <summary>
    /// Returns a Content item which is held by the system
    /// </summary>
    /// <param name="id">The unique identifier of the <see ref="Content"/> item</param>
    [OperationContract]
    Content GetContent(int id);

    /// <summary>
    /// Fetches <see ref="Content"/> which are currently awaiting moderation
    /// </summary>
    [OperationContract]
    Content[] GetContentForModeration();

    /// <summary>
    /// Approves a Content item which is awaiting moderation
    /// </summary>
    /// <param name="id">The unique identifier of the <see ref="Content"/> item to moderate</param>
    [OperationContract]
    void ApproveContent(int id);
  }
}
